#pragma once
#include <memory>
#include <vector>
#include <functional>
#include <boost/any.hpp>

using std::tr1::shared_ptr;
#define SHARE_PTR(x, y) \
	typedef std::tr1::shared_ptr< x > y##_Sptr; \
	typedef std::vector< y##_Sptr > y##_Sptrs;

static struct
{
	template <class T>
	operator std::tr1::shared_ptr<T>()
	{
		return std::tr1::shared_ptr<T>(new T);
	}
}SharePtrNew;

